package com.info.provider.service.wechat;

import com.mars.app.exception.WeChatInteractException;
import com.mars.app.wetchat.WeChatIdentify;
import com.mars.app.wetchat.WeChatInteractInfo;

/**
 * Created by pengshuo on 2018/1/8 14:46
 * Description: 与微信接口交互
 * Modified By:
 * Version:
 *
 * @author pengshuo
 */
public interface WeChatInteract {

    /**
     * code 换取 session_key
     * {
     * ​这是一个 HTTPS 接口，开发者服务器使用登录凭证 code 获取 session_key 和 openid。
     * session_key 是对用户数据进行加密签名的密钥。为了自身应用安全，session_key 不应该在网络上传输。
     * }
     * @param js_code 登录时获取的 code
     * @return WeChatIdentify
     * @throws WeChatInteractException
     */
    WeChatIdentify code2SessionKey(String js_code) throws WeChatInteractException;

    /**
     * 通过微信接口交互数据 生成本地的 sessionId
     * @param identify 微信接口交互数据
     * @return WeChatInteractInfo
     * @throws WeChatInteractException
     */
    WeChatInteractInfo createThirdSession(WeChatIdentify identify) throws WeChatInteractException;

    /**
     * 处理微信用户敏感信息
     * @param interactInfo 敏感数据
     * @return 成功/失败
     * @throws WeChatInteractException
     */
    Boolean processEncryptedData(WeChatInteractInfo interactInfo) throws WeChatInteractException;
}
